//
//  YZMHomeTableViewController.swift
//  YZMweibo
//
//  Created by Simon on 16/4/18.
//  Copyright © 2016年 Simon. All rights reserved.
//

import UIKit

private let YZMHomeTableViewControllerID =  "YZMHomeTableViewControllerID"

class YZMHomeTableViewController: YZMVisitorViewController {
    // 保存微博数据数组
    var status: [YZMStatus]?
    
    override func viewDidLoad() {
        super.viewDidLoad()

        // 判断我们用户是否登录
        if !isLogin{
            visitorView?.setVisitorInfo(nil, title: nil)
            return
            
        }
        setTableViewCell()
        // 请求微博首页数据
        loadData {[weak self] (statuss) -> () in
            // 01-赋值
            self?.status = statuss
            // 02-刷新UI
            self?.tableView.reloadData()
        }

    }
    //注册自定义Cell
    private func setTableViewCell(){
        
        tableView.registerClass(YZMHomeCell.self, forCellReuseIdentifier: YZMHomeTableViewControllerID)
        // UITableViewAutomaticDimension 自动计算行高
        tableView.rowHeight = UITableViewAutomaticDimension
        // 预估行高 预估行高与我们实际的cell高度越接近越好
        tableView.estimatedRowHeight = 200
        // 设置风格
        tableView.separatorStyle = .None
        
    }
}
extension YZMHomeTableViewController{
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return status?.count ?? 0
    }
    
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier(YZMHomeTableViewControllerID, forIndexPath: indexPath) as! YZMHomeCell
        
        cell.status = status![indexPath.row]
        
        return cell
        
    }
    
    
    
}

// MARK: - 请求微博首页数据
extension YZMHomeTableViewController{
    func loadData(callback:(statuss: [YZMStatus])->()){
        // 请求url
        let urlString = "https://api.weibo.com/2/statuses/home_timeline.json"
        // 请求参数
        let params = ["access_token": YZMUserAccountTools.sharedTools.accessToken!]
        
        YZMNetworkTools.sharedTools.request(YZMRequestMethod.GET, urlString: urlString, params: params) { (response, error) -> () in
            if error != nil{
                print(error)
                return
            }
            
            // 判断我们的得到的数据是否存在 而且是否是一个数组
            guard let array = response?["statuses"] as? [[String: AnyObject]] else{
                print("返回的数据不是一个数组")
                return
            }
            // 定义一个临时数组
            var tempArray:[YZMStatus] = [YZMStatus]()
            // 遍历数组 转模型
            for dic in array{
                let status = YZMStatus(dict: dic)
                // 往数组中添加模型
                tempArray.append(status)
            }
            // 执行闭包 告知外界我们的数据请求成功啦
            callback(statuss: tempArray)
        }
        
        
        
    }
    
}
